import type { Component } from 'vue'
import type { RouteRecordNameGeneric } from 'vue-router'
import { get } from 'lodash-es'

import IIconsAdmin from '~icons/icons/admin'
import IIconsAlarmConfig from '~icons/icons/alarm-config'
import IIconsAlarmRecord from '~icons/icons/alarm-record'
import IIconsApplication from '~icons/icons/application'
import IIconsBandwidth from '~icons/icons/bandwidth'
import IIconsCascade from '~icons/icons/cascade'
import IIconsCdn from '~icons/icons/cdn'
import IIconsCertAccount from '~icons/icons/cert-account'
import IIconsCertManagement from '~icons/icons/cert-management'
import IIconsCloudComputing from '~icons/icons/cloud-computing'
import IIconsClusterManagement from '~icons/icons/cluster-list'
import IIconsDedicated from '~icons/icons/dedicated'
import IIconsDedicatedNode from '~icons/icons/dedicated-node'
import IIconsDnsAccount from '~icons/icons/dns-account'
import IIconsAddressPool from '~icons/icons/dns-address-pool'

import IIconsDomainList from '~icons/icons/dns-domain'
import IIconsInstanceManagement from '~icons/icons/dns-instance'
import IIconsNsVersion from '~icons/icons/dns-node-version'
import IIconsNsAddress from '~icons/icons/dns-ns-address'
import IIconsNsNode from '~icons/icons/dns-ns-node'

import IIconsFirewall from '~icons/icons/firewall'
import IIconsImage from '~icons/icons/image'
import IIconsInstanceData from '~icons/icons/instance-data'
import IIconsIp from '~icons/icons/ip'
import IIconsLog from '~icons/icons/log'
import IIconsLoginRecord from '~icons/icons/login-record'
import IIconsNodeList from '~icons/icons/node-list'
import IIconsNodeVersion from '~icons/icons/node-version'
import IIconsPortConfig from '~icons/icons/port-config'
import IIconsRegion from '~icons/icons/region'
import IIconsResolveDomain from '~icons/icons/resolve-domain'
import IIconsSecurityConfiguration from '~icons/icons/security'
import IIconsSecurityLogs from '~icons/icons/security-log'
import IIconsSettings from '~icons/icons/settings'
import IIConsSwitch from '~icons/icons/switch'
import IIconsTask from '~icons/icons/task'
import IIconsVps from '~icons/icons/vps'
import IIconsVpsNode from '~icons/icons/vps-node'

export const markMenuIconsMap: Recordable<Component> = {
  /** '应用列表 */
  Applications: IIconsApplication,
  /** '云计算资源 */
  ResourceStatisticsWithCloudComputing: IIconsCloudComputing,
  /** 'CDN 资源 */
  ResourceStatisticsWithCloudCdn: IIconsCdn,
  /** '云服务器分组 */
  CouldComputingCloudComputingGroup: IIconsVps,
  /** '裸金属分组 */
  CouldComputingDedicatedGroup: IIconsDedicated,
  /** '区域管理 */
  CouldComputingRegions: IIconsRegion,
  /** '交换机管理 */
  CouldComputingSwitch: IIConsSwitch,
  /** '计算节点 */
  CouldComputingComputeNode: IIconsVpsNode,
  /** '裸金属节点 */
  CouldComputingDedicatedNode: IIconsDedicatedNode,
  /** '镜像管理 */
  CouldComputingImages: IIconsImage,
  CouldComputingBandwidth: IIconsBandwidth,
  /** 'IP 管理 */
  CouldComputingIP: IIconsIp,
  /** '默认防火钱 */
  CouldComputingDefaultFirewall: IIconsFirewall,
  /** '实例数据 */
  DevOpsMonitorInstanceData: IIconsInstanceData,
  /** '任务监控 */
  DevOpsMonitorTaskMonitor: IIconsTask,
  /** '告警记录 */
  DevOpsMonitorAlarmRecord: IIconsAlarmRecord,
  /** '告警配置 */
  DevOpsMonitorAlarmConfig: IIconsAlarmConfig,
  /** '系统设置 */
  SettingsSystemConfig: IIconsSettings,
  /** '管理员列表 */
  SettingsAdminList: IIconsAdmin,
  /** '登录记录 */
  SettingsAdminLoginRecord: IIconsLoginRecord,
  /** '管理员日志 */
  SettingsAdminLogs: IIconsLog,

  /** 节点列表 */
  CdnNodeNodeList: IIconsNodeList,
  /** 节点级联 */
  CdnNodeCascade: IIconsCascade,
  /** 安全配置 */
  CdnNodeSecurityConfiguration: IIconsSecurityConfiguration,
  /** 安全日志 */
  CdnNodeSecurityLog: IIconsSecurityLogs,
  /** 节点版本 */
  CdnNodeNodeVersion: IIconsNodeVersion,
  /** 端口配置 */
  CdnNodePortConfig: IIconsPortConfig,
  /** 分组管理 */
  CdnGroupManagement: IIconsClusterManagement,
  /** 集群域名列表 */
  CdnResolveDomainList: IIconsResolveDomain,
  /** 系统域名列表 */
  SystemDomainList: IIconsDomainList,
  /** 系统域名账户 */
  SystemDomainAccount: IIconsDnsAccount,
  /** 证书管理 */
  CertManagement: IIconsCertManagement,
  /** ACME 账户 */
  CertAccount: IIconsCertAccount,
  /** 域名配置 */
  CertDomain: IIconsDomainList,

  /** dns域名解析 */
  DnsResolveDomain: IIconsResolveDomain,
  /** dns实例管理 */
  DnsInstanceList: IIconsInstanceManagement,
  /** dns地址池 */
  DnsAddressPoolManagement: IIconsAddressPool,
  /** dns ns地址 */
  DnsNSAddress: IIconsNsAddress,
  /** dns ns节点 */
  DnsNSNode: IIconsNsNode,
  /** dns version */
  DnsNSVersion: IIconsNsVersion,
}

export function getMenuIcon(name: RouteRecordNameGeneric) {
  return get(markMenuIconsMap, String(name))
}
